A/B testing technology allows software developers to experiment with various user interface configurations, to discover which configuration is optimal. Multiple experimental configurations may be developed, for example, and then served to specific users, whose interaction and feedback may be monitored and evaluated. The same or similar technology may be employed to customize user interface configurations on a per-user basis. In both cases, various limitations of the technology result in sub-optimal user experiences.
One solution renders experimental or user-specific content in a web view. However, such web views typically do not look and behave the same a native interfaces and the renderers that support them may be slow or lack native integration. A different solution allows the native elements of a user interface to be re-arranged per an experiment or user customization. While properties of the native elements can be changed, their text and other aspects cannot, resulting in relatively rigid experiments and customization.
In a related context, developers may wish to converse with their users, in that they want to deliver contextually relevant messages for the users to consume. For example, a developer may want to alert a user to a new feature or function, converse with a user about his or her subscription status, or the like. The aforementioned infrastructure for running experiments can be leveraged to deliver such messages (as opposed to experimental configurations), but only with the same limitations discussed above.
Another solution is to provide links within a user interface to a native application that, when clicked-on by the user, deliver the user to a web experience outside of the native application. In either case, the user experience is sub-optimal and the developer's ability to converse meaningfully with end-users is limited.
Overview
Technology is disclosed herein that allows for experiments, customization, and in-app messaging to be deployed in the context of a native application using the native controls that are part of the application. In an implementation, a targeted messaging service in the cloud interfaces with a targeted messaging client on a device. The targeted messaging service provides a user-specific package to the client that specifies which native controls to invoke in response to which triggering events, as well as the assets to deploy in the controls.
The targeted messaging client, which runs in the context of the native application it is supporting, receives the package from the service and monitors for the events that trigger targeted messages. A targeted control is formed by an existing native control combined with a specific asset provided in the package. When a given event occurs, the targeted messaging client merges the asset with the native control and displays the resulting targeted control in a user interface to the application.
This Overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Technical Disclosure. It may be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.